IB/FB - info o jednotlivych polich tabulky + jak muzu zjistit "Effected rows"

Otázka od: Ing. Jiri SOKOL

2. 10. 2002 13:12

Ahoj.
Mam 2 dotazy.

1) jak muzu z tabulky databaze zjistit udaje o jednotlivych polich. Nejvic me
zajima,
   jak muzu z Delphi nacist vycet (jak jste mi uz tady poradili - vytvoreny
pomoci
   "domain") do combobox-u. Cili, aby uzivatel mohl zadavat jen ty udaje, ktere
jsou
   zadany u jednotlivych poli. Planuju do budoucna moznost rozsirovani tohoto
vyctu
   a tak o definovani konstantni podoby comboboxu neuvazuju.
2) kdyz provedu SQL dotaz, vysledek se zobrazi nebo nahlasi chybu. Existuje ale
pripad,
   ze SQL prikaz probehne vporadku, ale "jakoby" nic neudela. Vychazim z jinych
databazi,
   kde existuje prikaz Effected rows, ktery vrati pocet radku, se kterymi bylo
pracovano.
   Existuje nejaky ekvivalent pro IB/FB?

Diky Jirka

Ing. Jiri Sokol, js-delphi@seznam.cz, +420251431187
D6ProfSP2,WinNT
amatersky programator

______________________________________________________________________
Reklama:
Mapy Prahy, Brna a Cech najdete na http://www.mapy.cz

Odpovedá: Jaroslav Uher

2. 10. 2002 14:59

Ahoj,

On 2 Oct 2002 at 11:32, Ing. Jiri SOKOL wrote:

> Ahoj.
> Mam 2 dotazy.
>
> 1) jak muzu z tabulky databaze zjistit udaje o jednotlivych polich.
> Nejvic me zajima,
> jak muzu z Delphi nacist vycet (jak jste mi uz tady poradili -
> vytvoreny pomoci "domain") do combobox-u. Cili, aby uzivatel mohl
> zadavat jen ty udaje, ktere jsou zadany u jednotlivych poli.
> Planuju do budoucna moznost rozsirovani tohoto vyctu a tak o
> definovani konstantni podoby comboboxu neuvazuju.

timto selectem zjistis vsechny DOMAINs

 IBQueryTmp.SQL.Text := 'select RDB$FIELD_NAME from
RDB$FIELDS'+
                        ' where RDB$SYSTEM_FLAG = 0'+
                        ' order by 1';

Jarek Uher

Odpovedá: Ondrej Kelle

2. 10. 2002 17:08

> 1) jak muzu z tabulky databaze zjistit udaje o jednotlivych
> polich. Nejvic me zajima, jak muzu z Delphi nacist vycet
> (jak jste mi uz tady poradili - vytvoreny pomoci "domain")
> do combobox-u. Cili, aby uzivatel mohl zadavat jen ty
> udaje, ktere jsou zadany u jednotlivych poli.

TField.OnGetText/OnSetText.

> 2) kdyz provedu SQL dotaz, vysledek se zobrazi nebo nahlasi
> chybu. Existuje ale pripad, ze SQL prikaz probehne vporadku,
> ale "jakoby" nic neudela. Vychazim z jinych databazi,
> kde existuje prikaz Effected rows, ktery vrati pocet radku, se
> kterymi bylo pracovano.
> Existuje nejaky ekvivalent pro IB/FB?

RowsAffected.

HTH
TOndrej

Odpovedá: Pavel Cisar

2. 10. 2002 16:39

Haj hou!

On 2 Oct 2002 at 11:32, Ing. Jiri SOKOL wrote:

> 1) jak muzu z tabulky databaze zjistit udaje o jednotlivych polich. Nejvic me
zajima,
> jak muzu z Delphi nacist vycet (jak jste mi uz tady poradili - vytvoreny
pomoci
> "domain") do combobox-u. Cili, aby uzivatel mohl zadavat jen ty udaje,
ktere jsou
> zadany u jednotlivych poli. Planuju do budoucna moznost rozsirovani tohoto
vyctu
> a tak o definovani konstantni podoby comboboxu neuvazuju.

Ze systemovych tabulek. Popis v dokumentaci nebo v serialku na
http://www.dbsvet.cz (dobry cesky portal o databazich vubec).

Bohuzel, hodnoty pro vycet se takto vyzovat nedaji (nebo jen dost tezce).
Kontrolni podminka CHECK je totiz v databazi ulozena najednou. Je ovsem
dostupny puvodni text podminky, ze ktereho se to snad da vyzobat.

> 2) kdyz provedu SQL dotaz, vysledek se zobrazi nebo nahlasi chybu. Existuje
ale pripad,
> ze SQL prikaz probehne vporadku, ale "jakoby" nic neudela. Vychazim z
jinych databazi,
> kde existuje prikaz Effected rows, ktery vrati pocet radku, se kterymi
bylo pracovano.
> Existuje nejaky ekvivalent pro IB/FB?

Samozrejme   Pokud pouzivas IBX nebo FIBPlus, hledej property
AffectedRows na Query komponente a ji podobnych. U IBO by melo byt neco
podobneho. BDE to pokud vim nepodporuje, nevim jak ODBC (OLE DB by melo).

S pozdravem
Pavel Cisar
Mobil: 0724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase

Odpovedá: Lebeda David

4. 10. 2002 12:15

> > Nejvic me zajima,
> > jak muzu z Delphi nacist vycet (jak jste mi uz tady poradili -
> > vytvoreny pomoci "domain") do combobox-u. Cili, aby uzivatel mohl
> > zadavat jen ty udaje, ktere jsou zadany u jednotlivych poli.
> > Planuju do budoucna moznost rozsirovani tohoto vyctu a tak o
> > definovani konstantni podoby comboboxu neuvazuju.
>
> Bohuzel, hodnoty pro vycet se takto vyzovat nedaji (nebo jen dost
> tezce). Kontrolni podminka CHECK je totiz v databazi ulozena najednou.
> Je ovsem dostupny puvodni text podminky, ze ktereho se to snad da
> vyzobat.

Ahoj,

tak nevim, ale v takovemto pripade se mi zda pouziti domeny coby mista definice

vyctu spise nesmysl, zejmena s ohledem na zde uvedene pozadavky. V danem
pripade by mi prislo spravnejsi zalozit druhou tabulku - ciselnik. Podle
charakteru
bud dvojsloupcovou (ID + hodnota) s ID jako primarni klic, nebo jednosloupcovou
se
seznamem hodnot (tentokrat ve funkci primarniho klice a z druhe tabulky mit
odkaz
(foreign key) do tohoto ciselniku. Efekt je naprosto stejny a seznam hodnot se

inteligentne udrzovat.

Nebo jsem neco prehledl? Ano, neni to obdoba enum, jak tazatel puvodne chtel,
ale
take myslim netvrdil, ze to musi byt prave neco takoveho.

David Lebeda

Odpovedá: Pavel Cisar

4. 10. 2002 10:24

Haj hou!

On 3 Oct 2002 at 6:29, Lebeda David wrote:

> tak nevim, ale v takovemto pripade se mi zda pouziti domeny coby mista
definice
> vyctu spise nesmysl, zejmena s ohledem na zde uvedene pozadavky. V danem
> pripade by mi prislo spravnejsi zalozit druhou tabulku - ciselnik. Podle
charakteru
> bud dvojsloupcovou (ID + hodnota) s ID jako primarni klic, nebo
jednosloupcovou se
> seznamem hodnot (tentokrat ve funkci primarniho klice a z druhe tabulky mit
odkaz
> (foreign key) do tohoto ciselniku. Efekt je naprosto stejny a seznam hodnot
se dá
> inteligentne udrzovat.

Tak, tak   Ale to je ciselnik a ne enum (datovy typ), jak znela puvodni
otazka. Ciselnik snad umi pouzivat kazdy  

Jeste k tomu ciselniku, pokud bude seznam diskretnich hodnot maly, a
pocet zaznamu v tabulce kde bude pouzit naopak velky, je u IB/FB (zatim)
lepsi oprogramovat si hlidani vazby v triggeru nebo check podmince rucne,
nez definovat cizi klic. Na cizi klic se automaticky vytvari index, ktery
by ovsem v tomto pripade mel nizkou selektivitu, a tudiz by byl spise na
prekazku.

S pozdravem
Pavel Cisar
Mobil: 0724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase